<?php

class Url {

    private $url = null;
    private $baseUrl = null;
    private $modulo = 'basico';
    private $controlador = 'index';

    public function __construct() {
        $this->getURLList();
    }

    public function getBase() {
        if ($this->baseUrl != null)
            return $this->baseUrl;

        global $_SERVER;

        $startUrl = strlen($_SERVER["DOCUMENT_ROOT"]);
        $excludeUrl = substr($_SERVER["SCRIPT_FILENAME"], $startUrl, -9);
        if ($excludeUrl[0] == "/")
            $this->baseUrl = $excludeUrl;
        else
            $this->baseUrl = "/" . $excludeUrl;

        return $this->baseUrl;
    }

    public function getURL($id) {
        // Valida se existe o ID informado e retorna. 
        if (isset($this->url[$id]))
            return $this->url[$id];
        // Caso não exista o ID, retorna nulo 
        return null;
    }

    public function getURLS() {
        return $this->url;
    }

    public function getModulo() {
        return $this->modulo;
    }

    public function getControlador() {
        return $this->controlador;
    }

    private function getURLList() {
        global $_SERVER;
        // Primeiro traz todos as pastas abaixo do index.php 
        $startUrl = strlen($_SERVER["DOCUMENT_ROOT"]) - 1;
        $excludeUrl = substr($_SERVER["SCRIPT_FILENAME"], $startUrl, -10);
        // a variável$request possui toda a string da URL após o domínio. 
        $request = $_SERVER['REQUEST_URI'];
        // Agora retira toda as pastas abaixo da pasta raiz 
        $request = substr($request, strlen($excludeUrl));
        // Explode a URL para pegar retirar tudo após o ? 
        $urlTmp = explode("?", $request);
        // Explo a URL para pegar cada uma das partes da URL 
        $urlExplodida = explode("/", $urlTmp[0]);
        
        $this->modulo = (!empty($urlExplodida[1])) ? $urlExplodida[1] : $this->modulo;
        $this->controlador = (!empty($urlExplodida[2])) ? $urlExplodida[2] : $this->controlador;
        $conta = count($urlExplodida);
        $retorna = array();
        if ($conta > 3) {
            for ($a = 3; $a <= $conta; $a + 2) {
                if (isset($urlExplodida[$a]) AND $urlExplodida[$a] != "") {
                    $retorna[$urlExplodida[$a]] = $urlExplodida[$a + 1];
                }
            }
        }        
        $this->url = $retorna;
    }

}
